This invention relates to distributed processing, particularly but not exclusively distributed processing for control of a telecommunications network. More particularly, this invention is concerned with developing and updating the control systems implemented on the distributed processors, which are preferably (but not necessarily) processes implemented in an object-oriented fashion.
Telecommunications networks are increasingly required to support high bandwidth, low delay information flow. The bandwidth required is rapidly progressing from kilobits per second to megabits per second and even, for some applications, gigabits per second (particularly, for example, for video on demand; animated shared simulations, and distributed computing).
To provide xe2x80x9cintelligent networkxe2x80x9d facilitates such as call redirection to particular numbers, computer programs run on a number of host computers (up to 100, for example) connected with switching centres. The way in which services are to be provided for particular customers (for example, a particular number to which calls for a customer are to be routed) depends upon data stored in relation to that customer on the host computers. Thus, there may be many millions of subscriber records on tens or hundreds of host computers.
In xe2x80x9cTwenty-twenty visionxe2x80x94software architectures for intelligence in the 21st centuryxe2x80x9d, P. A. Martin, BT Technology Journal, Vol 13 No. 2, April 1995, the present inventor proposed the use of object-oriented techniques to implement the distributed processing required.
A description of object oriented technology will be found in, for example, BT Technology Journal, Vol 11 No. 3, July 1993, xe2x80x9cObject oriented technologyxe2x80x9d, edited by E. L. Cusack and E. S. Cordingley. Although the term is not always used with precision, object oriented computing here refers to the computing technique in which data is stored in xe2x80x9cencapsulatedxe2x80x9d form in which, rather than being directly accessible by a calling program or routine, the data is accessible only by an associated program which can read, write and edit the data. A record of data and its associated programs are referred to as an xe2x80x9cobjectxe2x80x9d. Communication to and from an object is generally by xe2x80x9cmessage passingxe2x80x9d; that is, a call to the object passes data values and invokes the operation of one of the programs comprised within the object, which then returns data values.
Various languages are available for programmers who wish to use the objected oriented approach. Of these, the commonest at present is C++.
Distributed processing differs from single processor operation in several respects. Firstly, different access techniques may be required depending on whether other programs or data are located on the same host computer as a calling program or on a different host computer. The location of a program or data will also affect the speed with which it can be reached from another program. Also, one or more host computers may fail whilst leaving others in operation.
Distributed computing is conventionally performed, by using a xe2x80x9cclient-serverxe2x80x9d arrangement in which a xe2x80x9cclientxe2x80x9d program on one computer interrogates a xe2x80x9cserverxe2x80x9d program on another computer which then performs the function or returns the data required by the client program.
Object oriented techniques have not widely been applied to distributed processing. A summary of the state of the art in this respect may be found in xe2x80x9cObject oriented programming systemsxe2x80x9d; Blair G., Pitman Publishing, London, 1991 (ISBN 0-273-03132-5) and particularly in Chapter 9 at pages 223-243; xe2x80x9cDistributed systems and objectsxe2x80x9d; David Hutchison and Jonathan Walpole. Previous attempts have generally added new syntax to an existing computer language, or have created new computer languages, to extend conventional object oriented programming to deal with distributed processing.
In a first aspect, the present invention provides a telecommunications system comprising a distributed control system consisting of a plurality of interconnected computers and apparatus for compiling control programs for the computers, the apparatus comprising:
a store for current system performance parameters; and
a compiler having a first part and a second part,
the first part being arranged (a) to respond to comments in an original source program, the comments comprising specified criteria for required system performance, by accessing appropriate system performance parameters from said store, evaluating whether the required system performance can be met by the original source program, and, in the event of a negative evaluation result, generating appropriate additional source program statements and compiler directives and producing a modified source program by incorporating the additional source program statements and compiler directives into the original source program, and
the second part being arranged (b) to respond to executable statements in the original source program or, in said event of a negative evaluation result, the modified source program, to produce executable code.
Conveniently, the compiler of this first aspect of the invention comprises a pre-compiler in conjunction with a conventional compiler, but it will be recognised that the functionality of the invention could be incorporated directly into a re-written compiler.
Thus, according to this first aspect of the invention, the source code may be compiled and tested for execution by the author of the program on a single processor by a conventional compiler, the comments specific to the multiprocessor environment being ignored by the single host compiler, prior to being compiled to execute on a multiprocessor system by the compiler of this first aspect of the invention. This enables the programmer to validate the basic operation of the program without need to test it in real time.
In a second aspect, the present invention provides a compiler for a distributed object system, in which functional requirements on system performance criteria can be entered and are interpreted during compilation to ensure that the function or requirements are met.
For example, the system performance criteria may be response time, number of objects, or integrity of data.
Preferably, in this aspect, functional requirements can be stored for each object and/or class of objects.
Conveniently, the functional requirements are specified using the comments referred to in the first aspect above.
In a third aspect, the present invention provides a method of generating code for execution on a distributed computing system which comprises:
generating an original source program comprising executable statements defining the structure of said code, and comments comprising specified criteria for required system performance;
accessing appropriate system performance parameters from a store of the distributed computing system, the store containing current system performance parameters;
evaluating whether the required system performance can be met by the original source program;
in the event of a negative evaluation result, generating appropriate additional source program statements and compiler directives and producing a modified source program by incorporating the additional source program statements and compiler directives into the original source program; and
responding to executable statements in the original source program or, in said event of a negative evaluation result, the modified source program, to produce executable code for execution on said distributed computing system.
Other aspects and embodiment of the invention are as described and claimed hereafter.